import { ref } from "vue";
import { clientApi } from "@/api/authority";
import { IObject } from "@/types/interface";

// 客户数据接口 - 根据API文档修正
interface ClientData {
  id: string;                     // 客户ID
  clientName: string;             // 客户名
  clientEmail: string;            // 客户邮箱
  countryRegion: string;          // 国家/地区
  organizationEmail: string;      // 组织邮箱
  organizationAddress: string;    // 组织地址
  adminName: string;              // 管理员姓名
  adminEmail: string;             // 管理员邮箱
  adminMobile: string;            // 管理员手机
  createTime: string;             // 创建时间
  modifyTime: string;             // 修改时间
  modifyingAccount: string;       // 修改账号
}

// 查询参数接口 - 根据API文档修正
interface QueryParams {
  page?: number;                  // 页码
  limit?: number;                 // 每页条数 - API文档中是limit
  clientName?: string;            // 客户名
}

// 新增客户参数接口 - 根据API文档修正
interface CreateClientData {
  clientName: string;             // 客户名
  clientEmail: string;            // 客户邮箱
  countryRegion: string;          // 国家/地区
  organizationEmail: string;      // 组织邮箱
  organizationAddress: string;    // 组织地址
  adminName: string;              // 管理员姓名
  adminEmail: string;             // 管理员邮箱
  adminMobile: string;            // 管理员手机
}

// 修改客户参数接口 - 根据API文档修正
interface UpdateClientData {
  id: string;                     // 客户ID
  clientName: string;             // 客户名
  organizationAddress: string;    // 组织地址
  adminName: string;              // 管理员姓名
  adminMobile: string;            // 管理员手机
}

// 模拟客户端数据 - 注释掉，使用真实API
/*
const mockClients: ClientData[] = [
  {
    id: "1",
    clientName: "CompanyAAA",
    country: "Sweden",
    organizationEmail: "xinyao.wang@zendure.co",
    adminName: "ASAdd",
    installer: "Karl Max",
    installerCompany: "Company NameAA",
    createTime: "2024-02-12 11:12:12",
    modifyTime: "2024-02-12"
  },
  // ... 其他模拟数据
];

// 生成更多测试数据
for (let i = 5; i <= 85; i++) {
  // ... 生成逻辑
}
*/

// 获取客户列表 - 调用真实API
export const getClientList = async (params: QueryParams) => {
  try {
    // 使用客户分页查询接口
    const response = await clientApi.getPage(params);
    if (response.code === 0) {
      return {
        list: response.data.list || [],
        totalCount: response.data.total || 0
      };
    } else {
      console.error('获取客户列表失败:', response.msg);
      return { list: [], totalCount: 0 };
    }
  } catch (error) {
    console.error('获取客户列表错误:', error);
    return { list: [], totalCount: 0 };
  }
};


// 更新客户 - 调用真实API
export const updateClient = async (clientData: UpdateClientData) => {
  try {
    // 使用客户修改接口
    const response = await clientApi.update(clientData);
    if (response.code === 0) {
      return { success: true, data: response.data, message: '客户更新成功' };
    } else {
      return { success: false, message: response.msg || '客户更新失败' };
    }
  } catch (error) {
    console.error('更新客户错误:', error);
    return { success: false, message: '客户更新失败' };
  }
};

// 获取客户详情 - 调用真实API
export const getClientInfo = async (clientId: string) => {
  try {
    // 使用客户查询接口
    const response = await clientApi.getInfo(clientId);
    if (response.code === 0) {
      return { success: true, data: response.data };
    } else {
      return { success: false, message: response.msg || '获取客户详情失败' };
    }
  } catch (error) {
    console.error('获取客户详情错误:', error);
    return { success: false, message: '获取客户详情失败' };
  }
};

// 格式化日期
const formatDate = (date: Date) => {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, "0");
  const day = String(date.getDate()).padStart(2, "0");
  const hours = String(date.getHours()).padStart(2, "0");
  const minutes = String(date.getMinutes()).padStart(2, "0");
  const seconds = String(date.getSeconds()).padStart(2, "0");

  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
};

// 格式化短日期
const formatDateShort = (date: Date) => {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, "0");
  const day = String(date.getDate()).padStart(2, "0");

  return `${year}-${month}-${day}`;
};
